package response

import (
	"errors"
	"net/http"

	"github.com/gin-gonic/gin"
)

type JsonResult struct {
	Code uint32      `json:"code"` // 响应编码：0成功 401请登录 403无权限 500错误
	Msg  string      `json:"msg"`  // 消息提示语
	Data interface{} `json:"data"` // 数据对象
}

func ResponseJsonMap(code uint32, message string, data interface{}) JsonResult {
	jsonMap := grantMap(code, message, data)
	return jsonMap
}

// 按照接口格式生成原数据数组
func grantMap(code uint32, message string, data interface{}) JsonResult {
	jsonMap := JsonResult{
		Code: code,
		Msg:  message,
		Data: data,
	}
	return jsonMap
}

// 获取全部请求解析到map
func Response(c *gin.Context, code uint32, msg string, data interface{}) {
	message := ResponseJsonMap(code, msg, data)
	c.Set("content-type", "application/json")
	c.JSON(http.StatusOK, message)
}

// 成功
func Success(c *gin.Context, msg string, data interface{}) {
	Response(c, 1, msg, data)
}

// 失败
func Error(c *gin.Context, msg string, data interface{}) {
	c.Error(errors.New(msg))
	Response(c, 50000, msg, data)
}
